package chapter8JVM_excute;

//虚拟机执行参数加上 -verbose:gc 打印GC过程
//花括号代码表示作用域
public class P82 {
    public static void main(String[] args) {
//        case1();
//        case2();
        case3();
//        case4();
    }

    private static void case1(){
        byte[] bytes = new byte[10*1024*1024];
        System.gc();
    }
    //由于当前方法的栈帧还没运行结束，作用域代码已经结束，加上局部变量表中的对应slot（变量漕）没有被覆盖所以不会被垃圾回收
    private static void case2(){
        {
            byte[] bytes = new byte[100*1024*1024];
        }

        System.gc();
    }
    //由于当前方法的栈帧还没运行结束，作用域代码已经结束，加上局部变量表中的对应slot（变量漕）被覆盖了所以会被垃圾回收
    private static void case3(){
        {
            byte[] bytes = new byte[100*1024*1024];
        }
        int x = 1;
        System.gc();
    }
    //由于当前方法的栈帧还没运行结束，作用域代码已经结束，加上局部变量表中的对应slot（变量漕）第一个被覆盖了所以会被垃圾回收，第二个不会
    private static void case4(){
        {
            byte[] bytes = new byte[100*1024*1024];
            byte[] bytes1 = new byte[100*1024*1024];
        }
        int x = 1;
        System.gc();

    }

}
